#pragma once

#include <berkelium\berkelium.hpp>
#include <berkelium\widget.hpp>

using namespace System;
using namespace System::Drawing;

namespace BerkeliumDotNet
{
	public ref class Widget : IDisposable
	{
	internal:
		Berkelium::Widget* widget;
		Widget(Berkelium::Widget* widget);
	public:
		~Widget();

		void Focus();
		void Unfocus();

		void MouseMoved(int xPos, int yPos);
		void MouseButton(unsigned int buttonId, bool down);
		void MouseWheel(int xScroll, int yScroll);

		void TextEvent(char event, size_t eventLength);
		void KeyEvent(bool pressed, int modifiers, int vkCode, int scancode);

		property System::Drawing::Rectangle^ Rectangle
		{
			System::Drawing::Rectangle^ get();
		}
		void SetPosition(int x, int y);
	};
}
